package com.apop.common.task;

import com.apop.common.util.ZFileUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * 定时任务
 * @version : 1.0
 * @Name ClearJob
 * @description:
 * @author:zjt
 * @data:2021/12/13 14:27
 */
@Slf4j
@Component
public class ClearJob {

    @Value("${res.upload.path}")
    private String path;

    /**
     * 定时清理过期文件
     */
    //@Scheduled(cron = "${scheduled_clean_time}")//(cron = "0 0 4 * * ?") //每天凌晨4点执行 //"0 0 1 ? * L" 每周天一点运行
    public void clearExpireFiles (){
        // step1 遍历指定目录 path
        File file = new File(path);
        String TimeNow = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
        log.debug("============= 开始执行定时清理 "+TimeNow);
        String a = "-";
        Integer nowTimeNum = Integer.parseInt(TimeNow.replace(a,""));
        if (file.isDirectory()) {
            // 递归删除文件夹下内容
            File[] fileArr = file.listFiles();
            // foreach(文件夹){
            for (File files:fileArr){
                String delFileName = files.getName().substring(0,8);
                Integer delFileNum = Integer.parseInt(delFileName);
                Integer TimeDifference = nowTimeNum-delFileNum;
                // 判断名称 是 小于昨天
                if (TimeDifference>0){
                    // 删除文件夹
                    ZFileUtil.deleteDirectory(path+"\\"+files.getName());
                    log.debug("删除文件{}",files.getName());
                }
            }
        }else if(file.isFile()){
            log.debug("请选 {} ",path);
        }
        log.debug("============= 执行完成!");
    }
}
